//
//  main.m
//  计算今天是第几周
//
//  Created by ZhouFahong on 16/10/26.
//  Copyright © 2016年 ZhouFahong. All rights reserved.
//

#import <Foundation/Foundation.h>
//计算本周是一年中的第几周
//周日为一周的第一天
//#include <stdio.h>
//#include <time.h>


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int nweek = 0;
        int wd = 0;
        int yd = 0;
        time_t t; /*声明time_t结构体 t 。*/
        struct tm *ptr; /*声明tm结构体指针。*/
        
        time(&t); /*初始化time_t结构体t 。*/
        ptr = gmtime(&t); /*获得已初始化的tm结构体。*/
        
        wd = ptr->tm_wday; /*今天是星期几。*/
        yd = ptr->tm_yday; //今天是今年的第几天 范围0-365 所以yd也表示今天距1月1日的总天数
        
        //计算本年1月1日是周几
        int base = 7 - (yd + 1 - (wd + 1)) % 7;//yd+1表示到今天的总天数 wd+1表示到今天本周的总天数
        if (base == 7)
            base = 0; //0代表周日 一周的开始
        
        //计算本周是一年的第几周
        nweek = (base + yd) / 7 + 1;
        
        
        //计算年份
        int year = ptr->tm_year + 1900;
        //计算月份
        int mon = ptr->tm_mon + 1;
        //计算一个月中的日期
        int day = ptr->tm_mday;
        
        printf("今天是 %d年%d月%d日。\n", year,mon,day);
        printf("今天是周 %d 。\n", wd);
        printf("从1月1日算起今周是第 %d 周。\n", nweek);
    }
    return 0;
}

